package thread.ex.chrono;
import java.lang.reflect.InvocationTargetException;

import javax.swing.SwingUtilities;


public class ControleurCompteur {
	
	private Compteur compteur;
	private CompteurGUI gui;
	
	public ControleurCompteur(Compteur compteur, CompteurGUI gui) {
		this.compteur = compteur;
		this.gui = gui;
		gui.setControleur(this);
		setVisibleGUI();
	}
	
	public String currentThreadName() {
		return compteur.currentThreadName();
	}
	
	public void launch() {
		compteur.launch();
	}
	
	public void initZero() {
		compteur.initZero();
	}
	
	public void stop() {
		compteur.setStop(true);
	}
	
	public void pause() {
		compteur.pause();
	}
	
	public void resume() {		
		compteur.resume();
	}
	
	public String getValue() {
		return "" + compteur.getCpt();
	}
	
	public String getValueCPTS() {
		return "" + compteur.getCptS();
	}
	
	public int[] compteurHMS() {
		return compteur.getHMS();
	}
	
	public String compteurChronoHMS() {
		String hms = compteur.getH() + " : " + compteur.getM() + " : " + compteur.getS();
		return hms;
	}
	
	public void setVisibleGUI() {
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				gui.setVisible(true);			
			}
		});
	}
	
	public static void main(String[] args) {
		int precision = 1;
		Compteur compteur = new Compteur(precision);
		final CompteurGUI refGUI[] = new CompteurGUI[1];
		try {
			SwingUtilities.invokeAndWait(new Runnable() {
				
				@Override
				public void run() {
					refGUI[0] = new CompteurGUI();
				}
			});
			ControleurCompteur controleur = new ControleurCompteur(compteur, refGUI[0]);
			controleur.setVisibleGUI();
		} catch (InvocationTargetException | InterruptedException e) {
			e.printStackTrace();
		}
	}
}
